<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Spring</title>
    <link rel="alternate" href="https://spring.io/blog" />
    <link rel="self" href="https://spring.io/blog.atom" />
    <id>http://spring.io/blog.atom</id>
    <icon>https://spring.io/favicon.ico</icon>
    <updated>2016-12-23T07:56:00Z</updated>
    <entry>
        <title>Spring Data Release Train Ingalls RC1 Released</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/23/spring-data-release-train-ingalls-rc1-released" />
        <category term="releases" label="Releases" />
        <author>
            <name>Oliver Gierke</name>
        </author>
        <id>tag:spring.io,2016-12-21:2748</id>
        <updated>2016-12-23T07:56:00Z</updated>
        <content type="html">&lt;p&gt;On behalf of the Spring Data team I&amp;rsquo;d like to announce the first (and final) release candidate of Spring Data train &lt;a href="https://de.wikipedia.org/wiki/Daniel_Henry_Holmes_Ingalls,_Jr."&gt;Ingalls&lt;/a&gt;. The release ships over 310 issues fixed (some of them previously released with Hopper service releases). The most important new features are:&lt;/p&gt;
            &lt;ul&gt;
            &lt;li&gt;Upgrade to Spring 4.3(.5) as baseline - &lt;a href="https://github.com/spring-projects/spring-data-build/issues/294"&gt;#294&lt;/a&gt;.&lt;/li&gt;
            &lt;li&gt;Support to easily expose domain events as Spring application events from aggregate roots - &lt;a href="https://jira.spring.io/browse/DATACMNS-928"&gt;DATACMNS-928&lt;/a&gt;.&lt;/li&gt;
            &lt;li&gt;Support for exists projection from derived query methods - &lt;a href="https://jira.spring.io/browse/DATACMNS-875"&gt;DATACMNS-875&lt;/a&gt;.&lt;/li&gt;
            &lt;li&gt;Support for Javaslang&amp;rsquo;s &lt;code&gt;Option&lt;/code&gt;, collection and map types on repository query methods - &lt;a href="https://jira.spring.io/browse/DATACMNS-937"&gt;DATACMNS-937&lt;/a&gt;, &lt;a href="https://jira.spring.io/browse/DATACMNS-940"&gt;DATACMNS-940&lt;/a&gt;.&lt;/li&gt;
            &lt;li&gt;Added Spring Data LDAP module taking over the repository implementation of Spring LDAP.&lt;/li&gt;
            &lt;li&gt;Support for MongoDB aggregation operators added in latest releases - &lt;a href="https://jira.spring.io/browse/DATAMONGO-1539"&gt;DATAMONGO-1536&lt;/a&gt;.&lt;/li&gt;
            &lt;li&gt;Stream execution now rejects invocation without surrounding transaction in JPA - &lt;a href="https://jira.spring.io/browse/DATAJPA-1023"&gt;DATAJPA-1023&lt;/a&gt;.&lt;/li&gt;
            &lt;li&gt;Support for annotation based indexing and expirations in Gemfire - &lt;a href="https://jira.spring.io/browse/SGF-106"&gt;SGF-106&lt;/a&gt;, &lt;a href="https://jira.spring.io/browse/SGF-516"&gt;SGF-516&lt;/a&gt;.&lt;/li&gt;
            &lt;li&gt;Support for CORS configuration in Spring Data REST - &lt;a href="https://jira.spring.io/browse/DATAREST-573"&gt;DATAREST-573&lt;/a&gt;.&lt;/li&gt;
            &lt;/ul&gt;
            &lt;p&gt;The release of course contains a lot more features. Find the complete list of fixed tickets here and a more curated change log for the most significant features in Ingall in our &lt;a href="https://github.com/spring-projects/spring-data-commons/wiki/Release-Train-Ingalls"&gt;release train wiki&lt;/a&gt;. We&amp;rsquo;re shooting for a GA release mid to end of January with a couple of bug fixes and documentation polishing applied. So it&amp;rsquo;s the perfect time to give the current release a spin and help us ironing out glitches.&lt;/p&gt;
            &lt;p&gt;As always, feedback is appreciated via the &lt;a href="https://jira.spring.io"&gt;bug tracker&lt;/a&gt;, the &lt;a href="https://gitter.im/spring-projects/spring-data"&gt;Gitter channel&lt;/a&gt;, on StackOverflow or even &lt;a href="https://twitter.com/springdata"&gt;Twitter&lt;/a&gt;. To round things off, here&amp;rsquo;s the list&lt;/p&gt;
            &lt;ul&gt;
            &lt;li&gt;Spring Data Commons 1.13 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-commons/1.13.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/commons/docs/1.13.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/commons/docs/1.13.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/commons/docs/1.13.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data JPA 1.11 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-jpa/1.11.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/jpa/docs/1.11.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/jpa/docs/1.11.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/jpa/docs/1.11.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data KeyValue 1.2 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-keyvalue/1.2.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/keyvalue/docs/1.2.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/keyvalue/docs/1.2.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/keyvalue/docs/1.2.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data for Apache Cassandra 1.5 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-cassandra/1.5.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/cassandra/docs/1.5.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/cassandra/docs/1.5.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/cassandra/docs/1.5.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data for Apache Solr 2.1 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-solr/2.1.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/solr/docs/2.1.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/solr/docs/2.1.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/solr/docs/2.1.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data Gemfire 1.9 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-gemfire/1.9.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/gemfire/docs/1.9.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/gemfire/docs/1.9.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/gemfire/docs/1.9.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data Neo4j 4.2 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-neo4j/4.2.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/neo4j/docs/4.2.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/neo4j/docs/4.2.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/neo4j/docs/4.2.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data MongoDB 1.10 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-mongodb/1.10.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/mongodb/docs/1.10.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/mongodb/docs/1.10.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/mongodb/docs/1.10.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data LDAP 1.0 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-ldap/1.0.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/ldap/docs/1.0.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/ldap/docs/1.0.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/ldap/docs/1.0.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data Envers 1.1 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-envers/1.1.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/envers/docs/1.1.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/envers/docs/1.1.0.RC1/reference/html"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data REST 2.6 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-rest-webmvc/2.6.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/rest/docs/2.6.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/rest/docs/2.6.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/rest/docs/2.6.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data Redis 1.8 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-redis/1.8.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/redis/docs/1.8.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/redis/docs/1.8.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/redis/docs/1.8.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data Elasticsearch 2.1 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-elasticsearch/2.1.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/elasticsearch/docs/2.1.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/elasticsearch/docs/2.1.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/elasticsearch/docs/2.1.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Data Couchbase 2.2 RC1 - &lt;a href="https://repo.spring.io/libs-milestone/org/springframework/data/spring-data-couchbase/2.2.0.RC1"&gt;Artifacts&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/couchbase/docs/2.2.0.RC1/api"&gt;JavaDocs&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/couchbase/docs/2.2.0.RC1/reference/html"&gt;Documentation&lt;/a&gt; - &lt;a href="http://docs.spring.io/spring-data/couchbase/docs/2.2.0.RC1/changelog.txt"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;</content>
    </entry>
    <entry>
        <title>Spring Boot 1.4.3 Available Now</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/23/spring-boot-1-4-3-available-now" />
        <category term="releases" label="Releases" />
        <author>
            <name>Phil Webb</name>
        </author>
        <id>tag:spring.io,2016-12-23:2753</id>
        <updated>2016-12-23T03:14:39Z</updated>
        <content type="html">&lt;p&gt;It is my pleasure to announce that Spring Boot &lt;code&gt;1.4.3&lt;/code&gt; has been released and is available now from &lt;a href="http://repo.spring.io/release"&gt;repo.spring.io&lt;/a&gt; and &lt;a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.springframework.boot%22"&gt;Maven Central&lt;/a&gt;. &lt;/p&gt;
            &lt;p&gt;Spring Boot 1.4.3 includes &lt;a href="https://github.com/spring-projects/spring-boot/milestone/75?closed=1"&gt;over 70 fixes, improvements and 3rd party dependency updates&lt;/a&gt;! Thanks to all that have contributed!&lt;/p&gt;
            &lt;p&gt;If you&amp;rsquo;re interested in helping out, check out the &lt;a href="https://github.com/spring-projects/spring-boot/labels/ideal-for-contribution"&gt;&amp;ldquo;ideal for contribution&amp;rdquo; tag&lt;/a&gt; in the issue repository. If you have general questions, please ask at &lt;a href="http://stackoverflow.com"&gt;stackoverflow.com&lt;/a&gt; using the &lt;a href="http://stackoverflow.com/tags/spring-boot"&gt;&lt;code&gt;spring-boot&lt;/code&gt; tag&lt;/a&gt;.&lt;/p&gt;
            &lt;p&gt;&lt;a href="http://projects.spring.io/spring-boot/"&gt;Project Page&lt;/a&gt; | &lt;a href="https://github.com/spring-projects/spring-boot"&gt;GitHub&lt;/a&gt; | &lt;a href="https://github.com/spring-projects/spring-boot/issues"&gt;Issues&lt;/a&gt; | &lt;a href="http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle"&gt;Documentation&lt;/a&gt;&lt;/p&gt;</content>
    </entry>
    <entry>
        <title>CVE-2016-9879: Spring Security 3.2.10, 4.1.4, 4.2.1 Released</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/22/cve-2016-9879-spring-security-3-2-10-4-1-4-4-2-1-released" />
        <category term="releases" label="Releases" />
        <author>
            <name>Rob Winch</name>
        </author>
        <id>tag:spring.io,2016-12-22:2751</id>
        <updated>2016-12-22T22:12:00Z</updated>
        <content type="html">&lt;div class="paragraph"&gt;
            &lt;p&gt;On behalf of the community, I&amp;#8217;m pleased to announce the release of Spring Security 3.2.10, 4.1.4, and 4.2.1 which fix CVE-2016-9879. Users are encouraged to update immediately.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;It is important to note that Spring Framework 3.2.x has &lt;a href="https://spring.io/blog/2016/12/21/spring-framework-4-3-5-4-2-9-and-3-2-18-available-now"&gt;reached EOL&lt;/a&gt;. As with Spring Framework, we expect all users to upgrade to 4.2.1+ for further support. Detailed instructions (including samples) on migrating both XML and Java Config based projects can be found in the &lt;a href="https://docs.spring.io/spring-security/site/docs/4.2.x/reference/html/m3to4.html"&gt;reference appendix&lt;/a&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="sect1"&gt;
            &lt;h2 id="cve-2016-9879-encoded-in-path-variables"&gt;&lt;a class="anchor" href="#cve-2016-9879-encoded-in-path-variables"&gt;&lt;/a&gt;CVE-2016-9879 - Encoded "/" in path variables&lt;/h2&gt;
            &lt;div class="sectionbody"&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;strong&gt;Severity:&lt;/strong&gt; High&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;strong&gt;Vendor:&lt;/strong&gt; Pivotal&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;strong&gt;Versions affected:&lt;/strong&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="ulist"&gt;
            &lt;ul&gt;
            &lt;li&gt;
            &lt;p&gt;Spring Security 3.2.0 - 3.2.9&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Spring Security 4.0.x - 4.1.3&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Spring Security 4.2.0&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Older unsupported versions are also affected&lt;/p&gt;
            &lt;/li&gt;
            &lt;/ul&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Spring Security does not consider URL path parameters when processing security constraints. By adding an URL path parameter with an encoded "/" to a request, an attacker may be able to bypass a security constraint. The root cause of this issue is a lack of clarity regarding the handling of path parameters in the Servlet Specification (see below). Some Servlet containers include path parameters in the value returned for getPathInfo() and some do not. Spring Security uses the value returned by getPathInfo() as part of the process of mapping requests to security constraints. The unexpected presence of path parameters can cause a constraint to be bypassed.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Users of Apache Tomcat (all current versions) are not affected by this vulnerability since Tomcat follows the guidance previously provided by the Servlet Expert group and strips path parameters from the value returned by getContextPath(), getServletPath() and getPathInfo().&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Users of other Servlet containers based on Apache Tomcat may or may not be affected depending on whether or not the handling of path parameters has been modified.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Users of IBM WebSphere Application Server 8.5.x are known to be affected.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Users of other containers that implement the Servlet specification may be affected.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;strong&gt;Mitigation&lt;/strong&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Adopting one of the following mitigations will protect against this vulnerability
            - use a Servlet container known not to include path parameters in the return values for getServletPath() and getPathInfo()
            - upgrade to Spring Security 3.2.10, 4.1.4 or 4.2.1 will reject the request with a RequestRejectedException if the presence of an encoded "/" is detected. If you wish to disable this feature (i.e. your container does not include path parameters in servletPath and pathInfo) it can be disabled by setting the DefaultHttpFirewall.allowUrlEncodedSlash = true.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;An application that uses the following intercept URL pattern:&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="listingblock"&gt;
            &lt;div class="content"&gt;
            &lt;pre class="prettyprint highlight"&gt;&lt;code&gt;&amp;lt;intercept-url access="authenticated" pattern="/a/b/**" /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;to protect URLs such as:&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="listingblock"&gt;
            &lt;div class="content"&gt;
            &lt;pre class="prettyprint highlight"&gt;&lt;code&gt;/a/b/c&lt;/code&gt;&lt;/pre&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;can be exploited by an attacker that uses a URL of the form:&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="listingblock"&gt;
            &lt;div class="content"&gt;
            &lt;pre class="prettyprint highlight"&gt;&lt;code&gt;/a;%2f1/b/c&lt;/code&gt;&lt;/pre&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="ulist"&gt;
            &lt;ul&gt;
            &lt;li&gt;
            &lt;p&gt;&lt;a href="http://www.securityfocus.com/archive/1/archive/1/514517/100/0/threaded"&gt;CVE-2010-3700&lt;/a&gt;&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;&lt;a href="https://github.com/spring-projects/spring-security/issues/4169"&gt;spring-projects/spring-security#4169&lt;/a&gt;&lt;/p&gt;
            &lt;/li&gt;
            &lt;/ul&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;strong&gt;Credit&lt;/strong&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;The issue was identified by Shumpei Asahara &amp;amp; Yuji Ito from NTT DATA Corporation and responsibly reported to Pivotal.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;a href="http://projects.spring.io/spring-security/"&gt;Project Site&lt;/a&gt; |
            &lt;a href="http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/"&gt;Reference&lt;/a&gt;
            |
            &lt;a href="http://docs.spring.io/spring-security/site/docs/current/guides/html5/"&gt;Guides&lt;/a&gt;
            | &lt;a href="http://stackoverflow.com/questions/tagged/spring-security"&gt;Help&lt;/a&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;/div&gt;</content>
    </entry>
    <entry>
        <title>Spring LDAP 2.2.1 &amp; 2.3 RC1 Released</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/22/spring-ldap-2-2-1-2-3-rc1-released" />
        <category term="releases" label="Releases" />
        <author>
            <name>Rob Winch</name>
        </author>
        <id>tag:spring.io,2016-12-22:2752</id>
        <updated>2016-12-22T18:02:49Z</updated>
        <content type="html">&lt;div class="paragraph"&gt;
            &lt;p&gt;On behalf of the community, I&amp;#8217;m pleased to announce the release of Spring LDAP 2.2.1 and 2.3 RC1.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;A special thanks to &lt;a href="https://twitter.com/mp911de"&gt;Mark Paluch&lt;/a&gt; for getting spring-data-ldap aligned on the Spring Data side!&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="sect1"&gt;
            &lt;h2 id="spring-ldap-2-3-rc1"&gt;&lt;a class="anchor" href="#spring-ldap-2-3-rc1"&gt;&lt;/a&gt;Spring LDAP 2.3 RC1&lt;/h2&gt;
            &lt;div class="sectionbody"&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;This release brings in a new era for Spring Data compatibility. Integration for Spring LDAP and Spring Data has been moved to &lt;a href="http://projects.spring.io/spring-data-ldap/"&gt;spring-data-ldap&lt;/a&gt; so that it can partake in the Spring Data release train and ensure compatibility with the latest and greatest Spring Data code base. For additional details refer to the &lt;a href="https://github.com/spring-projects/spring-ldap/milestone/25?closed=1"&gt;changelog&lt;/a&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="sect1"&gt;
            &lt;h2 id="spring-ldap-2-2-1"&gt;&lt;a class="anchor" href="#spring-ldap-2-2-1"&gt;&lt;/a&gt;Spring LDAP 2.2.1&lt;/h2&gt;
            &lt;div class="sectionbody"&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;This release contains some minor bug fixes along with an update to make updates to newer versions of Spring Data more seamless. For additional details refer to the &lt;a href="https://github.com/spring-projects/spring-ldap/milestone/23?closed=1"&gt;changelog&lt;/a&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;a href="http://projects.spring.io/spring-ldap/"&gt;Project Site&lt;/a&gt; |
            &lt;a href="http://docs.spring.io/spring-ldap/site/docs/current/reference/htmlsingle/"&gt;Reference&lt;/a&gt;
            | &lt;a href="http://stackoverflow.com/questions/tagged/spring-ldap"&gt;Help&lt;/a&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;/div&gt;</content>
    </entry>
    <entry>
        <title>Spring Tool Suite 3.8.3 released</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/22/spring-tool-suite-3-8-3-released" />
        <category term="releases" label="Releases" />
        <author>
            <name>Martin Lippert</name>
        </author>
        <id>tag:spring.io,2016-12-22:2750</id>
        <updated>2016-12-22T15:37:00Z</updated>
        <content type="html">&lt;p&gt;Dear Spring Community,&lt;/p&gt;
            &lt;p&gt;I am happy to announce the 3.8.3 release of the Spring Tool Suite, our Eclipse-based tooling.&lt;/p&gt;
            &lt;p&gt;STS 3.8.3 focuses on adopting Eclipse Neon.2 and fixing existing issues. The list of changes include:&lt;/p&gt;
            &lt;ul&gt;&#xD;
            &lt;li&gt;Updated to Eclipse Neon.2&lt;/li&gt;&#xD;
            &lt;li&gt;Added support for one-time passcode for Cloud Foundry targets in the Spring Boot Dashboard&lt;/li&gt;&#xD;
            &lt;li&gt;Added support for WAR packaging of Spring Boot apps when deploying them to CF in the Spring Boot Dashboard&lt;/li&gt;&#xD;
            &lt;li&gt;Added support for health-check in Cloud Foundry manifest files&lt;/li&gt;&#xD;
            &lt;li&gt;Fixed a number of most-reported errors from the automated error reporting&lt;/li&gt;&#xD;
            &lt;li&gt;and more...&lt;/li&gt;&#xD;
            &lt;/ul&gt;
            &lt;p&gt;To download the distributions, please go visit:&lt;/p&gt;
            &lt;ul&gt;&#xD;
            &lt;li&gt;Spring Tool Suite: &lt;a href="https://spring.io/tools/sts/all"&gt;https://spring.io/tools/sts/all&lt;/a&gt;&lt;/li&gt;&#xD;
            &lt;/ul&gt;
            &lt;p&gt;Detailed new and noteworthy notes can be found here: &lt;a href="http://docs.spring.io/sts/nan/v383/NewAndNoteworthy.html"&gt;STS 3.8.3 New &amp;amp; Noteworthy&lt;/a&gt;.&lt;/p&gt;
            &lt;p&gt;Enjoy!&lt;/p&gt;</content>
    </entry>
    <entry>
        <title>Spring Framework 4.3.5, 4.2.9 and 3.2.18 available now</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/21/spring-framework-4-3-5-4-2-9-and-3-2-18-available-now" />
        <category term="releases" label="Releases" />
        <author>
            <name>Stéphane Nicoll</name>
        </author>
        <id>tag:spring.io,2016-12-21:2741</id>
        <updated>2016-12-21T19:34:00Z</updated>
        <content type="html">&lt;p&gt;It is my pleasure to announce that the Spring Framework &lt;a href="https://jira.spring.io/secure/ReleaseNote.jspa?projectId=10000&amp;version=15779"&gt;4.3.5&lt;/a&gt;, &lt;a href="https://jira.spring.io/secure/ReleaseNote.jspa?projectId=10000&amp;version=15723"&gt;4.2.9&lt;/a&gt; and &lt;a href="https://jira.spring.io/secure/ReleaseNote.jspa?projectId=10000&amp;version=15566"&gt;3.2.18&lt;/a&gt; maintenance releases &lt;a href="http://projects.spring.io/spring-framework"&gt;are available now&lt;/a&gt;.&lt;/p&gt;
            &lt;p&gt;4.3.5 is a significant refinement release with 37 enhancements (including e.g. WebSocket support for the recently released Jetty 9.4) and several bug fixes, serving as the basis for the upcoming Spring Boot 1.4.3 release.&lt;/p&gt;
            &lt;p&gt;Please note that the 4.2.9 and 3.2.18 bug fix releases are the last in their respective line, with 4.2.x being superseded by 4.3.x now and 3.2.x reaching its EOL point. Going forward, we expect all users to upgrade to 4.3.5+ for further support.&lt;/p&gt;
            &lt;p&gt;All three releases also fix a path traversal vulnerability (CVE-2016-9878) in &lt;code&gt;ResourceServlet&lt;/code&gt;.&lt;br/&gt;If you happen to be among its rare users, please upgrade ASAP. Note that this functionality has been superseded for years already and will get removed in 5.0, so we actually recommend a migration to Spring MVC&amp;rsquo;s resource handling features within a &lt;code&gt;DispatcherServlet&lt;/code&gt; setup.&lt;/p&gt;
            &lt;p&gt;&lt;a href="http://projects.spring.io/spring-framework/"&gt;Project Page&lt;/a&gt; | &lt;a href="https://github.com/spring-projects/spring-framework"&gt;GitHub&lt;/a&gt; | &lt;a href="https://jira.spring.io/browse/SPR"&gt;Issues&lt;/a&gt; | &lt;a href="https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/htmlsingle/"&gt;Documentation&lt;/a&gt;&lt;/p&gt;</content>
    </entry>
    <entry>
        <title>Spring Tips: Spring Tool Suite</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/21/spring-tips-spring-tool-suite" />
        <category term="engineering" label="Engineering" />
        <author>
            <name>Josh Long</name>
        </author>
        <id>tag:spring.io,2016-12-15:2736</id>
        <updated>2016-12-21T09:14:00Z</updated>
        <content type="html">&lt;p&gt;Speaker: &lt;a href="https://www.twitter.com/starbuxman"&gt;Josh Long&lt;/a&gt;&lt;/p&gt;
            &lt;p&gt;Hi Spring fans! In this installment we look at the Spring Tool Suite, your premier Eclipse-based destination for building Spring applications.&lt;/p&gt;
            &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/6mtI4vmsQ08" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;</content>
    </entry>
    <entry>
        <title>This Week in Spring - December 20, 2016</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/20/this-week-in-spring-december-20-2016" />
        <category term="engineering" label="Engineering" />
        <author>
            <name>Josh Long</name>
        </author>
        <id>tag:spring.io,2016-12-20:2740</id>
        <updated>2016-12-20T16:04:00Z</updated>
        <content type="html">&lt;p&gt;Welcome to another installment of &lt;em&gt;This Week in Spring&lt;/em&gt;! This week I&amp;rsquo;m in the winter wonderland of Toronto, Canada, hanging out with the amazing Pivotal Labs Toronto office and working with some of the largest financial institutions in all of Canada as they transition to Spring Cloud and to Pivotal Cloud Foundry. I love seeing seemingly large, lumbering companies run at startup speeds and crave it.&lt;/p&gt;
            &lt;p&gt;This week is the week of Christmas for some in the world, followed shortly by the western western new year. If you celebrate either (or both) of them, then, on behalf of the Spring team, let me wish you the happiest of holidays! I, for one, can&amp;rsquo;t believe we&amp;rsquo;re now less than two weeks away from 2017 (and with it, the beginning of the 7th year writing &lt;em&gt;This Week in Spring&lt;/em&gt;!)&lt;/p&gt;
            &lt;p&gt;Thankfully, there&amp;rsquo;s a lot to be seen so let&amp;rsquo;s get to it.&lt;/p&gt;
            &lt;ul&gt;
            &lt;li&gt;Spring ninja Greg Turnquist has announced that &lt;a href="https://spring.io/blog/2016/12/19/spring-cloud-spinnaker-1-0-0-m2"&gt;Spring Cloud Spinnaker 1.0.0.M2 has been released&lt;/a&gt;!&lt;/li&gt;
            &lt;li&gt;All around great guy and Spring Session and Spring Security lead &lt;a href="https://spring.io/blog/2016/12/16/spring-session-1-3-0-released"&gt;Rob Winch has just announced Spring Session 1.3.0&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring IO Platform lead and Spring (and Spring Boot) ninja Andy Wilkinson has just announced &lt;a href="https://spring.io/blog/2016/12/16/dependency-management-plugin-1-0-0-rc1"&gt;the newly rewritten and streamlined Gradle dependency management plugin 1.0.0.RC1&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Spring Statemachine lead Janne Valkealahti has just announced &lt;a href="https://spring.io/blog/2016/12/15/spring-statemachine-1-2-0-released"&gt;Spring Statemachine 1.2.0&lt;/a&gt;, which supports UML submachines, state do actions, and so much more&lt;/li&gt;
            &lt;li&gt;Rajini Sivaram has just announced &lt;a href="https://spring.io/blog/2016/12/15/reactor-kafka-1-0-0-m1-released"&gt;the first milestone of the Reactor Kafka module&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;last week, continuing the &lt;em&gt;Spring Tips&lt;/em&gt; series, I looked at how to demystify what&amp;rsquo;s happening behind the scenes when &lt;a href="https://spring.io/blog/2016/12/14/spring-tips-demystifying-bootiful-magic"&gt;Spring Boot&amp;rsquo;s auto-configuration kicks in&lt;/a&gt;. Watch this video to code with confidence! Then check out Stéphane Nicoll and Brian Clozel for some additional Spring Boot magic in their S1P 2016 replay, &lt;a href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-10-ways-to-get-super-productive-with-spring-boot"&gt;10 Ways to Get Super Productive with Spring Boot&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;Big week for SpringOne Platform 2016 replays - starting with a Simon Ritter JDK daily double! First, it&amp;rsquo;s &lt;a href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-project-jigsaw-in-jdk-9-modularity-comes-to-java"&gt;JDK 9 Modularity with Jigsaw&lt;/a&gt; and then a talk on &lt;a href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-jdk-8-lessons-learnt-with-lambdas-and-streams"&gt;Lessons leanrt with JDK 8 Lambdas and Streams&lt;/a&gt;.&lt;/li&gt;
            &lt;li&gt;Stephane Nicoll and Yann Cebron from JetBrains live code their way through &lt;a href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-40-tips-tricks-for-spring-in-intellij-idea"&gt;40 Tips and Tricks for IntelliJ IDEA&lt;/a&gt; in this SpringOne Platform 2016 replay.&lt;/li&gt;
            &lt;li&gt;James Weaver gives a gentle introduction to Machine Learning in &lt;a href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-machine-learning-exposed"&gt;Machine Learning Exposed!&lt;/a&gt; with lots of Cloud Foundry and Spring demos.&lt;/li&gt;
            &lt;li&gt;Sebastian Deleluze shows us how he was &lt;a href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-developing-a-geospatial-webservice-with-kotlin-and-spring-boot"&gt;Developing a Geospatial Webservice with Kotlin and Spring Boot&lt;/a&gt; in this S1P 2016 replay.&lt;/li&gt;
            &lt;li&gt;GitLab has an interesting post on how to &lt;a href="https://about.gitlab.com/2016/12/14/continuous-delivery-of-a-spring-boot-application-with-gitlab-ci-and-kubernetes/"&gt;continuously deploy a Spring Boot application a cloud platform (which could as easily be Cloud Foundry)&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;last week I had the pleasure of doing a presentation with my buddy and &lt;a href="Http://twitter.com/jbaruch"&gt;JFrog&amp;rsquo;s very own Baruch&lt;/a&gt; and as part of that talk we designed a continuous delivery pipeline using Spring and JFrog Artifactory and Bintray which ulimately trigged a webhook automatically transitioning a Cloud Foundry application from a staging URL to a production URL (on the hypothetical acceptance of the story). That code, to switch the URL, was deployed on Pivotal Web Services (which is a Cloud Foundry deployment) and used the newly minted Reactor-powered Cloud Foundry Java client. I think it&amp;rsquo;s a &lt;em&gt;super&lt;/em&gt; cool API, and worth some investigation. Here&amp;rsquo;s &lt;a href="https://github.com/joshlong/cf-promoter/blob/master/src/main/java/com/example/PromoterApplication.java"&gt;the code, for your reference&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;This is an interesting look &lt;a href="https://www.javacodegeeks.com/2016/12/spring-boot-application-context-hierarchy.html"&gt;at how Spring manages application contexts&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;the future of the web is HTTPS, with HTTP all but requiring it effectively. Browser vendors are pushing for this as well. What&amp;rsquo;s your SSL strategy look like? &lt;a href="https://www.infoq.com/news/2016/12/google-pushing-https?utm_source=infoq&amp;utm_medium=popular_widget&amp;utm_campaign=popular_content_list&amp;utm_content=homepage"&gt;I thought this post on InfoQ was interesting&lt;/a&gt;. Remember, Spring Boot makes it dead simple to specify SSL keys and Cloud Foundry makes it even easier to securely terminate HTTPS at the platform router level instead of per node.&lt;/li&gt;
            &lt;li&gt;if you&amp;rsquo;re looking for something to feed your mind this holiday, may I humbly suggest you check &lt;a href="https://www.youtube.com/playlist?list=PLgGXSWYM2FpPw8rV0tZoMiJYSCiLhPnOc"&gt;out the Spring Tips videos&lt;/a&gt; I&amp;rsquo;ve been doing recently?&lt;/li&gt;
            &lt;/ul&gt;</content>
    </entry>
    <entry>
        <title>SpringOne Platform 2016 Replay: 10 Ways to Get Super Productive with Spring Boot</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-10-ways-to-get-super-productive-with-spring-boot" />
        <category term="news" label="News and Events" />
        <author>
            <name>Pieter Humphrey</name>
        </author>
        <id>tag:spring.io,2016-12-21:2747</id>
        <updated>2016-12-20T13:20:00Z</updated>
        <content type="html">&lt;p&gt;Recorded at SpringOne Platform 2016.&lt;br/&gt;Speakers: Stéphane Nicoll, Brian Clozel&lt;br/&gt;Slides: None, all live coding&lt;br/&gt;Spring Boot DevTools is not the only new feature that boosts your productivity. During this live coding session, we’ll work on 10 common app features and see how Boot is making your life easier.&lt;/p&gt;
            &lt;p&gt;We’ll cover the following:&lt;/p&gt;
            &lt;p&gt;Development cycle with Devtools, H2 Web console and persistent web sessions&lt;br/&gt;Manage custom error pages&lt;br/&gt;Managing application Cache&lt;br/&gt;Supporting OAuth2 in your app&lt;br/&gt;Using your custom AuthenticationPrincipal&lt;br/&gt;Using a persistent database in production&lt;br/&gt;Evolving your database schema with Flyway&lt;br/&gt;Custom Boot configuration (key hint, metadata)&lt;br/&gt;Gathering and exporting app Metrics&lt;br/&gt;Dealing with static resources in web apps&lt;/p&gt;
            &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/j7rQstg94Hk" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;</content>
    </entry>
    <entry>
        <title>SpringOne Platform 2016 Replay: JDK 8: Lessons Learnt With Lambdas and Streams</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-jdk-8-lessons-learnt-with-lambdas-and-streams" />
        <category term="news" label="News and Events" />
        <author>
            <name>Pieter Humphrey</name>
        </author>
        <id>tag:spring.io,2016-12-21:2746</id>
        <updated>2016-12-20T12:51:00Z</updated>
        <content type="html">&lt;p&gt;Recorded at SpringOne Platform 2016.&lt;br/&gt;Speaker: Simon Ritter, Azul&lt;br/&gt;Slides: &lt;a href="http://www.slideshare.net/SpringCentral/jdk8-lessons-learnt-with-lambdas-and-streams"&gt;http://www.slideshare.net/SpringCentral/jdk8-lessons-learnt-with-lambdas-and-streams&lt;/a&gt;&lt;/p&gt;
            &lt;p&gt;Lambda expressions and the streams API add a more functional style of programming to Java; something developers have not really had in the past.&lt;/p&gt;
            &lt;p&gt;This session will start with a short summary of the key features of both Lambda expressions and streams before moving on to some real world examples of how to use them effectively, including a number of lessons learnt from trying to apply an imperative style of programming when it should have been functional.&lt;/p&gt;
            &lt;p&gt;We&amp;rsquo;ll finish off with a quick look at some of the ideas for improvements to streams in JDK 9.&lt;/p&gt;
            &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/wZKmA6XodNE" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;</content>
    </entry>
    <entry>
        <title>SpringOne Platform 2016 Replay: 40 Tips &amp; Tricks for Spring in IntelliJ IDEA</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-40-tips-tricks-for-spring-in-intellij-idea" />
        <category term="news" label="News and Events" />
        <author>
            <name>Pieter Humphrey</name>
        </author>
        <id>tag:spring.io,2016-12-21:2745</id>
        <updated>2016-12-20T12:47:00Z</updated>
        <content type="html">&lt;p&gt;Recorded at SpringOne Platform 2016.&lt;br/&gt;Speakers: Stephane Nicoll and Yann Cebron, JetBrains&lt;br/&gt;Slides: None, live coding&lt;br/&gt;IDEs can be powerful, but hard to learn. Some features are hidden or simply not well known.&lt;/p&gt;
            &lt;p&gt;Let’s end this dilemma and make you more productive and efficient when working on Spring applications. Learn how to navigate, edit and perform refactorings across a variety of common Spring technologies.&lt;/p&gt;
            &lt;p&gt;You’ll leave this session with a whole stack of power tricks - right from the developers working on it.&lt;/p&gt;
            &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/e7DR88jQa0Q" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;</content>
    </entry>
    <entry>
        <title>SpringOne Platform 2016 Replay: Project Jigsaw in JDK 9: Modularity Comes To Java</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-project-jigsaw-in-jdk-9-modularity-comes-to-java" />
        <category term="news" label="News and Events" />
        <author>
            <name>Pieter Humphrey</name>
        </author>
        <id>tag:spring.io,2016-12-21:2744</id>
        <updated>2016-12-20T12:36:00Z</updated>
        <content type="html">&lt;p&gt;Recorded at SpringOne Platform 2016.&lt;br/&gt;Speaker: Simon Ritter, Azul Systems&lt;br/&gt;Slides: &lt;a href="http://www.slideshare.net/SpringCentral/project-jigsaw-in-jdk-9-modularity-comes-to-java-64849781"&gt;http://www.slideshare.net/SpringCentral/project-jigsaw-in-jdk-9-modularity-comes-to-java-64849781&lt;/a&gt;&lt;/p&gt;
            &lt;p&gt;Project Jigsaw will bring modularity to the Java platform; something that will enable better security, performance and flexibility for deployment of applications. This talk will look at the fundamentals of how modularity in Java will work. Developers will need to understand that these changes go significantly further than just separating the standard class libraries into a number of discrete units.&lt;/p&gt;
            &lt;p&gt;This talk will explain the impact project Jigsaw will have on developers in terms of building their applications, as well as helping them to understand how things like encapsulation of private APIs, which have up until now been visible, will change in JDK 9.&lt;/p&gt;
            &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/Ks7J_qQVR7Y" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;</content>
    </entry>
    <entry>
        <title>SpringOne Platform 2016 Replay: Machine Learning Exposed!</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-machine-learning-exposed" />
        <category term="news" label="News and Events" />
        <author>
            <name>Pieter Humphrey</name>
        </author>
        <id>tag:spring.io,2016-12-21:2743</id>
        <updated>2016-12-20T10:26:00Z</updated>
        <content type="html">&lt;p&gt;Recorded at SpringOne Platform 2016.&lt;br/&gt;Speaker: James Weaver&lt;br/&gt;Slides: &lt;a href="http://www.slideshare.net/SpringCentral/machine-learning-exposed-64845395"&gt;http://www.slideshare.net/SpringCentral/machine-learning-exposed-64845395&lt;/a&gt;&lt;br/&gt;The term &amp;ldquo;machine learning&amp;rdquo; is increasingly bandied about in corporate settings and cocktail parties, but what is it, really? In this session we&amp;rsquo;ll answer that question, providing an approachable overview of machine learning concepts, technologies, and use cases. We&amp;rsquo;ll then take a deeper dive into machine learning topics such as supervised learning, unsupervised learning, and deep learning. We&amp;rsquo;ll also survey various machine learning APIs and platforms. Technologies including Spring and Cloud Foundry will be leveraged in the demos. You&amp;rsquo;ll be the hit of your next party when you&amp;rsquo;re able to express the near-magical inner-workings of artificial neural networks!&lt;/p&gt;
            &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/4sf8IBGWnNo" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;</content>
    </entry>
    <entry>
        <title>SpringOne Platform 2016 Replay:  Developing a Geospatial Webservice with Kotlin and Spring Boot</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/20/springone-platform-2016-replay-developing-a-geospatial-webservice-with-kotlin-and-spring-boot" />
        <category term="news" label="News and Events" />
        <author>
            <name>Pieter Humphrey</name>
        </author>
        <id>tag:spring.io,2016-12-21:2742</id>
        <updated>2016-12-20T08:44:00Z</updated>
        <content type="html">&lt;p&gt;Recorded at SpringOne Platform 2016.&lt;br/&gt;Speaker: Sébastien Deleuze&lt;br/&gt;Slides: &lt;a href="http://www.slideshare.net/SpringCentral/developing-a-geospatial-webservice-with-kotlin-and-spring-boot"&gt;http://www.slideshare.net/SpringCentral/developing-a-geospatial-webservice-with-kotlin-and-spring-boot&lt;/a&gt;&lt;/p&gt;
            &lt;p&gt;As described in this announcement &lt;a href="https://spring.io/blog/2016/02/15/developing-spring-boot-applications-with-kotlin"&gt;I made on the Spring blog&lt;/a&gt;, it is now easy to create a Spring Boot application using Kotlin.&lt;/p&gt;
            &lt;p&gt;Thanks to a &lt;a href="https://spring.io/blog/2016/03/20/a-geospatial-messenger-with-kotlin-spring-boot-and-postgresql"&gt;sample Geospatial messenger application&lt;/a&gt;, I will show how Spring Boot and Kotlin share the same pragmatic, innovative and opinionated mindset to allow you to build simple but powerful projects.&lt;/p&gt;
            &lt;p&gt;This talk will provide an opportunity to show how to use a relational database without JPA in order to use advanced PostgreSQL functionalities (like its powerful spatial database extender PostGIS or native JSON support) while keeping a lightweight stack.&lt;/p&gt;
            &lt;p&gt;I will also demonstrate the upcoming Kotlin to Javascript transpiler that allows you to share code between client and server (domain model, validation) and to code your frontend with autocomplete, static typing and so on.&lt;/p&gt;
            &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/8QPqIgRV4FM" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;</content>
    </entry>
    <entry>
        <title>Spring Cloud Spinnaker 1.0.0.M3</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/19/spring-cloud-spinnaker-1-0-0-m3" />
        <category term="engineering" label="Engineering" />
        <author>
            <name>Greg Turnquist</name>
        </author>
        <id>tag:spring.io,2016-12-19:2739</id>
        <updated>2016-12-19T20:39:00Z</updated>
        <content type="html">&lt;div class="paragraph"&gt;
            &lt;p&gt;Greetings Spring community,&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;I am happy to release the second milestone for &lt;a href="https://cloud.spring.io/spring-cloud-spinnaker/"&gt;Spring Cloud Spinnaker&lt;/a&gt;. Spring Cloud Spinnaker bundles up the &lt;a href="http://www.spinnaker.io/"&gt;continuous delivery Spinnaker platform&lt;/a&gt;, and provides a 1-click installer to let you install it to any &lt;a href="https://www.cloudfoundry.org/use/cloud-foundry-certified/"&gt;certified Cloud Foundry provider&lt;/a&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;UPDATE: This blog post originally cited M2, however one of our early adopters spotted a &lt;a href="https://github.com/spring-cloud/spring-cloud-spinnaker/issues/118"&gt;critical bug&lt;/a&gt;, so M3 has been built and released with the fix in hand.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Key features included in this release:&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="ulist"&gt;
            &lt;ul&gt;
            &lt;li&gt;
            &lt;p&gt;Much more simplified way to login, select your org and space from dropdowns, etc., shooting for as simple an experience as possible.&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Ability to manage two CF spaces&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Support for Jenkins and Travis CI monitoring.&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Configure email and slack notifications&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Move to hosted uber JARs, meaning installing the installer is no longer a bugbear&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Other enhancements regarding to Spinnaker itself include ability to clone server groups, an upgrade to our Reactor-based cf-java-client 2 library, and also enhance UX showing more CF information than ever.&lt;/p&gt;
            &lt;/li&gt;
            &lt;/ul&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;If your team/meetup/JUG is interested in hearing more about Spinnaker, &lt;a href="https://spring.io/team/gturnquist"&gt;check in with me&lt;/a&gt; and we can arrange a Google Hangout.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Cheers,&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;a href="https://github.com/spring-cloud/spring-cloud-spinnaker"&gt;Source&lt;/a&gt; | &lt;a href="https://circleci.com/gh/spring-cloud/spring-cloud-spinnaker"&gt;PR CI&lt;/a&gt; | &lt;a href="https://jenkins.spring.io/view/All/job/spring-cloud-spinnaker/"&gt;Master CI&lt;/a&gt; | &lt;a href="http://www.spinnaker.io/docs"&gt;Docs&lt;/a&gt; | &lt;a href="http://stackoverflow.com/questions/tagged/spinnaker"&gt;Questions&lt;/a&gt; | &lt;a href="http://join.spinnaker.io/"&gt;Slack&lt;/a&gt;&lt;/p&gt;
            &lt;/div&gt;</content>
    </entry>
    <entry>
        <title>Spring Session 1.3.0 Released</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/16/spring-session-1-3-0-released" />
        <category term="releases" label="Releases" />
        <author>
            <name>Rob Winch</name>
        </author>
        <id>tag:spring.io,2016-12-16:2738</id>
        <updated>2016-12-16T15:19:54Z</updated>
        <content type="html">&lt;div class="paragraph"&gt;
            &lt;p&gt;On behalf of the community, I&amp;#8217;m pleased to announce the release of Spring Session 1.3.0.RELEASE. This release evolved through &lt;a href="https://github.com/spring-projects/spring-session/milestone/6?closed=1"&gt;1.3.0.M1&lt;/a&gt;,
            &lt;a href="https://github.com/spring-projects/spring-session/milestone/18?closed=1"&gt;1.3.0.M2&lt;/a&gt;,
            &lt;a href="https://github.com/spring-projects/spring-session/milestone/16?closed=1"&gt;1.3.0.RC1&lt;/a&gt;, and
            &lt;a href="https://github.com/spring-projects/spring-session/milestone/19?closed=1"&gt;1.3.0.RELEASE&lt;/a&gt;&lt;/p&gt;
            &lt;/div&gt;
            &lt;h1 id="what-s-new-in-spring-session-1-3-0-release" class="sect0"&gt;&lt;a class="anchor" href="#what-s-new-in-spring-session-1-3-0-release"&gt;&lt;/a&gt;What’s New in Spring Session 1.3.0.RELEASE&lt;/h1&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;You can find highlights of what&amp;#8217;s new in the &lt;a href="http://docs.spring.io/spring-session/docs/1.3.0.RELEASE/reference/html5/#what-s-new-in-1-3"&gt;What’s New in Spring Session 1.3.0.RELEASE&lt;/a&gt; section of the reference. For details refer to the changelog links above.&lt;/p&gt;
            &lt;/div&gt;
            &lt;h1 id="contributions" class="sect0"&gt;&lt;a class="anchor" href="#contributions"&gt;&lt;/a&gt;Contributions&lt;/h1&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Without the community we couldn&amp;#8217;t be the successful project we are today. I&amp;#8217;d like to thank everyone that created issues &amp;amp; provided feedback.&lt;/p&gt;
            &lt;/div&gt;
            &lt;h1 id="feedback-please" class="sect0"&gt;&lt;a class="anchor" href="#feedback-please"&gt;&lt;/a&gt;Feedback Please&lt;/h1&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;If you have feedback on this release, I encourage you to reach out via &lt;a href="http://stackoverflow.com/questions/tagged/spring-session"&gt;StackOverflow&lt;/a&gt;, &lt;a href="https://github.com/spring-projects/spring-session/issues"&gt;GitHub Issues&lt;/a&gt;, or via the comments section. You can also ping me &lt;a href="https://twitter.com/rob_winch"&gt;@rob_winch&lt;/a&gt; or Joe &lt;a href="https://twitter.com/joe_grandja"&gt;@joe_grandja&lt;/a&gt; on Twitter.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Of course the best feedback comes in the form of &lt;a href="https://github.com/spring-projects/spring-session/blob/1.3.0.RELEASE/CONTRIBUTING.adoc"&gt;contributions&lt;/a&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;&lt;a href="http://projects.spring.io/spring-session/"&gt;Project Site&lt;/a&gt; | &lt;a href="http://docs.spring.io/spring-session/docs/1.3.0.RELEASE/reference/html5/"&gt;Reference&lt;/a&gt; | &lt;a href="http://stackoverflow.com/questions/tagged/spring-session"&gt;Help&lt;/a&gt;&lt;/p&gt;
            &lt;/div&gt;</content>
    </entry>
    <entry>
        <title>Dependency Management Plugin 1.0.0.RC1</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/16/dependency-management-plugin-1-0-0-rc1" />
        <category term="releases" label="Releases" />
        <author>
            <name>Andy Wilkinson</name>
        </author>
        <id>tag:spring.io,2016-12-16:2737</id>
        <updated>2016-12-16T10:31:03Z</updated>
        <content type="html">&lt;p&gt;It&amp;rsquo;s my pleasure to announce that 1.0.0.RC1 of the &lt;a href="https://github.com/spring-gradle-plugins/dependency-management-plugin"&gt;Dependency Management Plugin&lt;/a&gt; has been released. It&amp;rsquo;s available from &lt;a href="https://plugins.gradle.org/plugin/io.spring.dependency-management"&gt;Gradle&amp;rsquo;s Plugin Portal&lt;/a&gt; as well as Maven Central and Bintray.&lt;/p&gt;&lt;h2&gt;&lt;a href="#what-rsquo-s-new" class="anchor" name="what-rsquo-s-new"&gt;&lt;/a&gt;What&amp;rsquo;s new?&lt;/h2&gt;
            &lt;p&gt;The plugin&amp;rsquo;s been rewritten in Java and its API has been formalised. A clear separation between that API and the plugin&amp;rsquo;s internals has been introduced. This has required a few breaking changes but you are unlikely to be affected if you were using the Groovy DSL.&lt;/p&gt;
            &lt;p&gt;Converting to Java and formalising the API has also enabled a couple of enhancements:&lt;/p&gt;&lt;h3&gt;&lt;a href="#official-support-for-gradle-3" class="anchor" name="official-support-for-gradle-3"&gt;&lt;/a&gt; Official support for Gradle 3&lt;/h3&gt;
            &lt;p&gt;Previously, the plugin was written in Groovy and attempted to support Gradle 1, 2, and 3. This &lt;a href="https://github.com/spring-gradle-plugins/dependency-management-plugin/issues/112"&gt;proved to be overly ambitious&lt;/a&gt;. The two main problems were binary incompatibilities across the three different Groovy runtimes (1.8, 2.3, and 2.4) and breaking changes across the three versions of Gradle. To address these, the Gradle team&amp;rsquo;s recommendation was to rewrite the plugin in Java and to drop support for Gradle 1.x. This release does just that, with the plugin&amp;rsquo;s main code now being 100% Java and Gradle 2.9 now being the minimum supported version. As a result, Gradle 3.x is now officially supported and it should be easier to support new versions of Gradle in the future. A welcome side-effect is a 13% reduction in the size of the plugin&amp;rsquo;s jar file.&lt;/p&gt;&lt;h3&gt;&lt;a href="#better-support-for-gradle-script-kotlin" class="anchor" name="better-support-for-gradle-script-kotlin"&gt;&lt;/a&gt;Better support for Gradle Script Kotlin&lt;/h3&gt;
            &lt;p&gt;Previously, the plugin&amp;rsquo;s API was heavily influenced by the fact that it was written in Groovy and its API and DSL were rather Groovy-centric. For example, Groovy Closures were used in a number of places without providing a non-Groovy alternative. This required Kotlin scripts to adapt a function to a closure, for example:&lt;/p&gt;
            &lt;pre&gt;&lt;code class="prettyprint kotlin"&gt;configure&amp;lt;DependencyManagementExtension&amp;gt; {&#xD;
            imports(delegateClosureOf&amp;lt;ImportsHandler&amp;gt; {&#xD;
            mavenBom(&amp;quot;io.spring.platform:platform-bom:Athens-SR1&amp;quot;)&#xD;
            })&#xD;
            }
            &lt;/code&gt;&lt;/pre&gt;
            &lt;p&gt;The conversion to Java highlighted the problem and, taking a lead from Gradle&amp;rsquo;s own API, 1.0 overloads a number of methods that previously only took a Groovy &lt;code&gt;Closure&lt;/code&gt; to also take a Gradle &lt;code&gt;Action&lt;/code&gt;. The overloaded methods allow you to neaten things up a bit, for example:&lt;/p&gt;
            &lt;pre&gt;&lt;code class="prettyprint kotlin"&gt;configure&amp;lt;DependencyManagementExtension&amp;gt; {&#xD;
            imports {&#xD;
            it.mavenBom(&amp;quot;io.spring.platform:platform-bom:Athens-SR1&amp;quot;)&#xD;
            }&#xD;
            }
            &lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;a href="#what-rsquo-s-next" class="anchor" name="what-rsquo-s-next"&gt;&lt;/a&gt;What&amp;rsquo;s next?&lt;/h2&gt;
            &lt;p&gt;With the API having been formalised and the plugin nearing 1.0, now is a great time to take it for a spin and let us know on &lt;a href="https://github.com/spring-gradle-plugins/dependency-management-plugin/issues"&gt;GitHub&lt;/a&gt; or &lt;a href="https://gitter.im/spring-gradle-plugins/dependency-management-plugin"&gt;Gitter&lt;/a&gt; of any problems you find or improvements that you&amp;rsquo;d like to see.&lt;/p&gt;
            &lt;p&gt;Thank you for all of the feedback and suggestions that you have contributed to the plugin thus far.&lt;/p&gt;</content>
    </entry>
    <entry>
        <title>Spring Statemachine 1.2.0 Released</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/15/spring-statemachine-1-2-0-released" />
        <category term="releases" label="Releases" />
        <author>
            <name>Janne Valkealahti</name>
        </author>
        <id>tag:spring.io,2016-12-15:2735</id>
        <updated>2016-12-15T12:21:58Z</updated>
        <content type="html">&lt;p&gt;We’re pleased to announce a release of &lt;a href="http://projects.spring.io/spring-statemachine"&gt;Spring Statemachine 1.2.0.RELEASE&lt;/a&gt;. Artifacts are available either from &lt;a href="http://repo1.maven.org/maven2/org/springframework/statemachine/"&gt;Maven Central&lt;/a&gt; or from &lt;a href="http://repo.spring.io/libs-release/org/springframework/statemachine/"&gt;Spring Repository&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;&lt;a href="#let-rsquo-s-see-what-we-did-for-this-initial-1-2-x-release" class="anchor" name="let-rsquo-s-see-what-we-did-for-this-initial-1-2-x-release"&gt;&lt;/a&gt;Let&amp;rsquo;s see what we did for this initial 1.2.x release&lt;/h2&gt;
            &lt;ul&gt;
            &lt;li&gt;Usual bug fixes and small enhancements.&lt;/li&gt;
            &lt;li&gt;Support for UML submachines.&lt;/li&gt;
            &lt;li&gt;New &lt;code&gt;Spring Data Repository&lt;/code&gt; abstraction keeping machine configurations in an external repository with built-in support for Redis, MongoDB and JPA.&lt;/li&gt;
            &lt;li&gt;New samples.&lt;/li&gt;
            &lt;li&gt;New support for state do actions.&lt;/li&gt;
            &lt;li&gt;New monitoring and tracing API&amp;rsquo;s.&lt;/li&gt;
            &lt;li&gt;Initial support for &lt;code&gt;Spring Boot&lt;/code&gt; auto-config.&lt;/li&gt;
            &lt;li&gt;New transition and state error action concepts.&lt;/li&gt;
            &lt;/ul&gt;
            &lt;p&gt;There&amp;rsquo;s no changes from a final release candicate but full history is available from &lt;a href="https://github.com/spring-projects/spring-statemachine/blob/master/docs/src/info/changelog.txt"&gt;changelog&lt;/a&gt;. &lt;/p&gt;&lt;h2&gt;&lt;a href="#where-do-we-go-from-here" class="anchor" name="where-do-we-go-from-here"&gt;&lt;/a&gt;Where do we go from here?&lt;/h2&gt;
            &lt;ul&gt;
            &lt;li&gt;&lt;code&gt;1.0.x&lt;/code&gt; is end of life with &lt;code&gt;1.0.3&lt;/code&gt; as a last release.&lt;/li&gt;
            &lt;li&gt;&lt;a href="https://github.com/spring-projects/spring-statemachine/tree/1.1.x"&gt;1.1.x&lt;/a&gt; and &lt;a href="https://github.com/spring-projects/spring-statemachine/tree/1.2.x"&gt;1.2.x&lt;/a&gt; are maintained in their own branches respectively &lt;code&gt;1.2.x&lt;/code&gt; being the main stable branch.&lt;/li&gt;
            &lt;li&gt;Most likely there will be &lt;code&gt;1.3.x&lt;/code&gt; at some point.&lt;/li&gt;
            &lt;li&gt;Master is now on &lt;code&gt;2.0.0.BUILD-SNAPSHOT&lt;/code&gt;.&lt;/li&gt;
            &lt;/ul&gt;&lt;h2&gt;&lt;a href="#stories-for-2-0-x-will-be" class="anchor" name="stories-for-2-0-x-will-be"&gt;&lt;/a&gt;Stories for 2.0.x will be&lt;/h2&gt;
            &lt;ul&gt;
            &lt;li&gt;JDK8 minimum level&lt;/li&gt;
            &lt;li&gt;Baselining on &lt;code&gt;Spring 5&lt;/code&gt;&lt;/li&gt;
            &lt;li&gt;Introducing reactive API&amp;rsquo;s with &lt;code&gt;Reactor 3&lt;/code&gt;&lt;/li&gt;
            &lt;/ul&gt;
            &lt;p&gt;Why do we think reactive type of programming might be a good thing with state machines? Well it all boils down to a machine execution model which is run-to-completion when either timer or event is causing something to happen in a future. If state machine is using synchronous event handling then user is blocked to wait for event to get processed. State machine has always supported asynchronous event handling, which is great but creates a burden for user to listen what and when maching is executing. With reactive style API&amp;rsquo;s we think that real life interaction with state machines will become much easier. Don&amp;rsquo;t worry, old API&amp;rsquo;s will not go away.&lt;/p&gt;
            &lt;p&gt;Thank you for all who have contributed in any way either via Stack Overflow, GitHub Issues or other channels. Driving force for changes really has been a community and requests from it.&lt;/p&gt;</content>
    </entry>
    <entry>
        <title>Reactor Kafka 1.0.0.M1 released</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/15/reactor-kafka-1-0-0-m1-released" />
        <category term="releases" label="Releases" />
        <author>
            <name>Rajini Sivaram</name>
        </author>
        <id>tag:spring.io,2016-12-08:2727</id>
        <updated>2016-12-15T05:00:00Z</updated>
        <content type="html">&lt;div class="paragraph"&gt;
            &lt;p&gt;We are pleased to announce the release of the first milestone of Reactor Kafka 1.0.0.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="sect2"&gt;
            &lt;h3 id="what-is-reactor-kafka"&gt;&lt;a class="anchor" href="#what-is-reactor-kafka"&gt;&lt;/a&gt;What is Reactor Kafka?&lt;/h3&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Reactor Kafka is a reactive API for &lt;a href="https://kafka.apache.org/"&gt;Apache Kafka&lt;/a&gt; based on
            &lt;a href="https://projectreactor.io"&gt;Project Reactor&lt;/a&gt;. Reactor Kafka API enables messages to be published to Kafka topics and consumed from Kafka topics using functional APIs with non-blocking back-pressure and very low overheads. This enables applications using Reactor to use Kafka as a message bus or streaming platform and integrate with other systems to provide an end-to-end reactive pipeline.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;The value proposition for Reactor Kafka is the efficient utilization of resources in applications with multiple external interactions where Kafka is one of the external systems. End-to-end reactive pipelines benefit from non-blocking back-pressure and efficient use of threads, enabling a large number of concurrent requests to be processed efficiently. The optimizations provided by Project Reactor enable development of reactive applications with very low overheads and predictable capacity planning to deliver low-latency, high-throughput pipelines.&lt;/p&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="sect2"&gt;
            &lt;h3 id="getting-started"&gt;&lt;a class="anchor" href="#getting-started"&gt;&lt;/a&gt;Getting Started&lt;/h3&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;To get started and run sample reactive Kafka producers and consumers, follow the instructions in the &lt;a href="https://repo.spring.io/milestone/io/projectreactor/kafka/reactor-kafka-docs/1.0.0.M1/reactor-kafka-docs-1.0.0.M1.zip!/docs/index.html#_getting_started"&gt;Getting Started&lt;/a&gt; section of the Reference Guide.&lt;/p&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="sect2"&gt;
            &lt;h3 id="reactor-kafka-api"&gt;&lt;a class="anchor" href="#reactor-kafka-api"&gt;&lt;/a&gt;Reactor Kafka API&lt;/h3&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Reactor Kafka API is based on the Apache Kafka Producer/Consumer API and consists of two main classes:&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="ulist"&gt;
            &lt;ul&gt;
            &lt;li&gt;
            &lt;p&gt;&lt;code&gt;Sender&lt;/code&gt; for publishing messages to Kafka topics&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;&lt;code&gt;Receiver&lt;/code&gt; for consuming messages from Kafka topics&lt;/p&gt;
            &lt;/li&gt;
            &lt;/ul&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;The full functionality of the underlying Kafka &lt;code&gt;Producer&lt;/code&gt; and &lt;code&gt;Consumer&lt;/code&gt; are provided by these reactive interfaces.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="sect3"&gt;
            &lt;h4 id="reactive-sender"&gt;&lt;a class="anchor" href="#reactive-sender"&gt;&lt;/a&gt;Reactive Sender&lt;/h4&gt;
            &lt;div class="listingblock"&gt;
            &lt;div class="content"&gt;
            &lt;pre class="prettyprint highlight"&gt;&lt;code class="language-java" data-lang="java"&gt;Sender&amp;lt;Integer, String&amp;gt; sender =
            Sender.create(SenderOptions.create(producerProps));                 &lt;b class="conum"&gt;(1)&lt;/b&gt;
            Flux&amp;lt;SenderRecord&amp;lt;Integer, String, Integer&amp;gt;&amp;gt; outboundFlux =             &lt;b class="conum"&gt;(2)&lt;/b&gt;
            Flux.range(1, 10)
            .map(i -&amp;gt; SenderRecord.create(producerRecord(topic, i), i));
            sender.send(outboundFlux, false)                                        &lt;b class="conum"&gt;(3)&lt;/b&gt;
            .doOnNext(r -&amp;gt; log.debug("Message #{} result: {}",
            r.correlationMetadata(), r.recordMetadata()))  &lt;b class="conum"&gt;(4)&lt;/b&gt;
            .subscribe();                                                     &lt;b class="conum"&gt;(5)&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="colist arabic"&gt;
            &lt;ol&gt;
            &lt;li&gt;
            &lt;p&gt;Create a &lt;code&gt;Sender&lt;/code&gt;&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;&lt;code&gt;Flux&lt;/code&gt; of outbound messages to send to Kafka&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Reactive send&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Log the result of every send&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Subscribe to start flow of messages to Kafka&lt;/p&gt;
            &lt;/li&gt;
            &lt;/ol&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="sect3"&gt;
            &lt;h4 id="reactive-receiver"&gt;&lt;a class="anchor" href="#reactive-receiver"&gt;&lt;/a&gt;Reactive Receiver&lt;/h4&gt;
            &lt;div class="listingblock"&gt;
            &lt;div class="content"&gt;
            &lt;pre class="prettyprint highlight"&gt;&lt;code class="language-java" data-lang="java"&gt;ReceiverOptions&amp;lt;Integer, String&amp;gt; receiverOptions =                      &lt;b class="conum"&gt;(1)&lt;/b&gt;
            ReceiverOptions.&amp;lt;Integer, String&amp;gt;create(consumerProps)
            .subscription(Collections.singleton(topic));
            Receiver.create(receiverOptions)                                        &lt;b class="conum"&gt;(2)&lt;/b&gt;
            .receive()                                                      &lt;b class="conum"&gt;(3)&lt;/b&gt;
            .subscribe(r -&amp;gt; {
            log.info("Received message {} ", r.record());           &lt;b class="conum"&gt;(4)&lt;/b&gt;
            r.offset().acknowledge();                               &lt;b class="conum"&gt;(5)&lt;/b&gt;
            });&lt;/code&gt;&lt;/pre&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="colist arabic"&gt;
            &lt;ol&gt;
            &lt;li&gt;
            &lt;p&gt;Create &lt;code&gt;ReceiverOptions&lt;/code&gt; and configure subscription to Kafka topic&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Create &lt;code&gt;Receiver&lt;/code&gt;&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Reactive receive&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Log every incoming message&lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
            &lt;p&gt;Acknowledge after processing message so that offset may be committed&lt;/p&gt;
            &lt;/li&gt;
            &lt;/ol&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="sect2"&gt;
            &lt;h3 id="resources"&gt;&lt;a class="anchor" href="#resources"&gt;&lt;/a&gt;Resources&lt;/h3&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;Reactor Kafka source and samples are available on &lt;a href="https://github.com/reactor/reactor-kafka"&gt;github&lt;/a&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class="paragraph"&gt;
            &lt;p&gt;For more information and additional resources, see &lt;a href="https://repo.spring.io/milestone/io/projectreactor/kafka/reactor-kafka-docs/1.0.0.M1/reactor-kafka-docs-1.0.0.M1.zip!/docs/index.html"&gt;Reactor Kafka Reference Guide&lt;/a&gt; and &lt;a href="https://repo.spring.io/milestone/io/projectreactor/kafka/reactor-kafka/1.0.0.M1/reactor-kafka-1.0.0.M1-javadoc.jar!/index.html"&gt;Javadocs&lt;/a&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;/div&gt;</content>
    </entry>
    <entry>
        <title>Spring Tips: Demystifying Bootiful Magic</title>
        <link rel="alternate" href="https://spring.io/blog/2016/12/14/spring-tips-demystifying-bootiful-magic" />
        <category term="engineering" label="Engineering" />
        <author>
            <name>Josh Long</name>
        </author>
        <id>tag:spring.io,2016-12-13:2730</id>
        <updated>2016-12-14T01:51:00Z</updated>
        <content type="html">&lt;p&gt;Speaker: &lt;a href="https://www.twitter.com/starbuxman"&gt;Josh Long&lt;/a&gt;&lt;/p&gt;
            &lt;p&gt;Hi Spring fans! In this installment of Spring Tips we&amp;rsquo;ll pull back the curtain to reveal what&amp;rsquo;s happening in Spring Boot&amp;rsquo;s auto-configuration &amp;ldquo;magic&amp;rdquo; to make debugging approachable.&lt;/p&gt;
            &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/Sw7I70vjN0E" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;</content>
    </entry>
</feed>